home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 012a / lib194.zip / TRIG.PRG < prev    next >
Text File  |  1992-12-23  |  14KB  |  431 lines

  1. *-------------------------------------------------------------------------------
  2. *-- Program...: TRIG.PRG
  3. *-- Programmer: Ken Mayer (CIS: 71333,1030)
  4. *-- Date......: 06/25/1992
  5. *-- Notes.....: Standard trig functions that weren't included in dBASE ...
  6. *--             See the file: README.TXT for details on the use of this library
  7. *--             file.
  8. *-------------------------------------------------------------------------------
  9.  
  10. FUNCTION Secant
  11. *-------------------------------------------------------------------------------
  12. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  13. *-- Date........: 03/01/1992
  14. *-- Notes.......: Secant of an angle X in radians.
  15. *--               Indeterminate and returns error if X is 90 or 270 deg.,
  16. *--                   i.e. mod( abs(X) + pi()/2 , pi() ) = 0
  17. *-- Written for.: dBASE IV, 1.1
  18. *-- Rev. History: None
  19. *-- Calls.......: None
  20. *-- Called by...: Any
  21. *-- Usage.......: Secant(<nX>)
  22. *-- Example.....: ?Secant(48)
  23. *-- Returns.....: Numeric
  24. *-- Parameters..: nX = Return Secant of X
  25. *-------------------------------------------------------------------------------
  26.  
  27.     parameters nX
  28.     
  29. RETURN 1 / cos( nX )
  30. *-- EoF: Secant()
  31.  
  32. FUNCTION CoSecant
  33. *-------------------------------------------------------------------------------
  34. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  35. *-- Date........: 03/01/1992
  36. *-- Notes.......: Cosecant of an angle X in radians
  37. *--               Indeterminate and returns error if X = 0 or 180 deg.,
  38. *--                 i. e. mod( abs(X), pi() ) = 0 
  39. *-- Written for.: dBASE IV, 1.1
  40. *-- Rev. History: None
  41. *-- Calls.......: None
  42. *-- Called by...: Any
  43. *-- Usage.......: CoSecant(<nX>)
  44. *-- Example.....: ?CoSecant(48)
  45. *-- Returns.....: Numeric
  46. *-- Parameters..: nX = Return CoSecant of X
  47. *-------------------------------------------------------------------------------
  48.  
  49.     parameters nX
  50.     
  51. RETURN 1 / sin( nX )
  52. *-- EoF: CoSecant()
  53.  
  54. FUNCTION CoTan
  55. *-------------------------------------------------------------------------------
  56. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  57. *-- Date........: 03/01/1992
  58. *-- Notes.......: Cotangent of an angle X in radians Indeterminate and returns 
  59. *--               error if X = 0 or 180 deg.,
  60. *--                   i. e. mod( abs(x), pi() ) = 0
  61. *-- Written for.: dBASE IV, 1.1
  62. *-- Rev. History: None
  63. *-- Calls.......: None
  64. *-- Called by...: Any
  65. *-- Usage.......: CoTan(<nX>)
  66. *-- Example.....: ?CoTan(48)
  67. *-- Returns.....: Numeric
  68. *-- Parameters..: nX = Return CoTan of X
  69. *-------------------------------------------------------------------------------
  70.  
  71.     parameters nX
  72.     
  73. RETURN  1 / tan( nX )
  74. *-- EoF: CoTan()
  75.  
  76. FUNCTION ASec
  77. *-------------------------------------------------------------------------------
  78. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  79. *-- Date........: 03/01/1992
  80. *-- Notes.......: Inverse secant - angle size in radians for a given
  81. *--               secant value X
  82. *-- Written for.: dBASE IV, 1.1
  83. *-- Rev. History: None
  84. *-- Calls.......: None
  85. *-- Called by...: Any
  86. *-- Usage.......: ASec(<nX>)
  87. *-- Example.....: ?ASec(48)
  88. *-- Returns.....: Numeric
  89. *-- Parameters..: nX = Return ASec of X
  90. *-------------------------------------------------------------------------------
  91.  
  92.     parameters nX
  93.     
  94. RETURN acos( 1 / nX )
  95. *-- EoF: ASec()
  96.  
  97. FUNCTION ACoSec
  98. *-------------------------------------------------------------------------------
  99. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  100. *-- Date........: 03/01/1992
  101. *-- Notes.......: Inverse cosecant - angle size in radians for a given
  102. *--               cosecant value X
  103. *-- Written for.: dBASE IV, 1.1
  104. *-- Rev. History: None
  105. *-- Calls.......: None
  106. *-- Called by...: Any
  107. *-- Usage.......: ACoSec(<nX>)
  108. *-- Example.....: ?ACoSec(48)
  109. *-- Returns.....: Numeric
  110. *-- Parameters..: nX = Return ACoSec of X
  111. *-------------------------------------------------------------------------------
  112.  
  113.     parameters nX
  114.     
  115. RETURN asin( 1 / nX )
  116. *-- EoF: ACoSec()
  117.  
  118. FUNCTION ACot
  119. *-------------------------------------------------------------------------------
  120. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  121. *-- Date........: 03/01/1992
  122. *-- Notes.......: Inverse cotangent - angle size in radians for a given
  123. *--               cotangent value X
  124. *-- Written for.: dBASE IV, 1.1
  125. *-- Rev. History: None
  126. *-- Calls.......: None
  127. *-- Called by...: Any
  128. *-- Usage.......: ACoT(<nX>)
  129. *-- Example.....: ?ACoT(48)
  130. *-- Returns.....: Numeric
  131. *-- Parameters..: nX = Return ACoT of X
  132. *-------------------------------------------------------------------------------
  133.  
  134.     parameters nX
  135.     
  136. RETURN atan( 1 / nX )
  137. *-- EoF: ACoT()
  138.  
  139. FUNCTION SinH
  140. *-------------------------------------------------------------------------------
  141. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  142. *-- Date........: 03/01/1992
  143. *-- Notes.......: Hyperbolic sine of an angle X in radians
  144. *-- Written for.: dBASE IV, 1.1
  145. *-- Rev. History: None
  146. *-- Calls.......: None
  147. *-- Called by...: Any
  148. *-- Usage.......: SinH(<nX>)
  149. *-- Example.....: ?SinH(48)
  150. *-- Returns.....: Numeric
  151. *-- Parameters..: nX = Return SinH of X
  152. *-------------------------------------------------------------------------------
  153.  
  154.     parameters nX
  155.     
  156. RETURN ( exp( nX ) - exp( -nX ) ) / 2
  157. *-- EoF: SinH()
  158.  
  159. FUNCTION CosH
  160. *-------------------------------------------------------------------------------
  161. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  162. *-- Date........: 03/01/1992
  163. *-- Notes.......: Hyperbolic cosine of an angle X in radians
  164. *-- Written for.: dBASE IV, 1.1
  165. *-- Rev. History: None
  166. *-- Calls.......: None
  167. *-- Called by...: Any
  168. *-- Usage.......: CosH(<nX>)
  169. *-- Example.....: ?CosH(48)
  170. *-- Returns.....: Numeric
  171. *-- Parameters..: nX = Return CosH of X
  172. *-------------------------------------------------------------------------------
  173.  
  174.     parameters nX
  175.     
  176. RETURN ( exp( nX ) + exp( -nX ) ) / 2
  177. *-- EoF: CosH()
  178.  
  179. FUNCTION TanH
  180. *-------------------------------------------------------------------------------
  181. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  182. *-- Date........: 03/01/1992
  183. *-- Notes.......: Hyperbolic tangent of an angle X in radians
  184. *-- Written for.: dBASE IV, 1.1
  185. *-- Rev. History: None
  186. *-- Calls.......: SINH()               Function in TRIG.PRG
  187. *--               COSH()               Function in TRIG.PRG
  188. *-- Called by...: Any
  189. *-- Usage.......: TanH(<nX>)
  190. *-- Example.....: ?TanH(48)
  191. *-- Returns.....: Numeric
  192. *-- Parameters..: nX = Return TanH of X
  193. *-------------------------------------------------------------------------------
  194.  
  195.     parameters nX
  196.  
  197. RETURN sinh( nX ) / cosh( nX )
  198. *-- EoF: TanH()
  199.  
  200. FUNCTION SecH
  201. *-------------------------------------------------------------------------------
  202. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  203. *-- Date........: 03/01/1992
  204. *-- Notes.......: Hyperbolic secant of an angle X in radians
  205. *-- Written for.: dBASE IV, 1.1
  206. *-- Rev. History: None
  207. *-- Calls.......: COSH()               Function in TRIG.PRG
  208. *-- Called by...: Any
  209. *-- Usage.......: SecH(<nX>)
  210. *-- Example.....: ?SecH(48)
  211. *-- Returns.....: Numeric
  212. *-- Parameters..: nX = Return SecH of X
  213. *-------------------------------------------------------------------------------
  214.  
  215.     parameters nX
  216.     
  217. RETURN 1 / cosh( nX )
  218. *-- EoF: SecH()
  219.  
  220. FUNCTION CScH
  221. *-------------------------------------------------------------------------------
  222. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  223. *-- Date........: 03/01/1992
  224. *-- Notes.......: Hyperbolic cosecant of an angle X in radians
  225. *-- Written for.: dBASE IV, 1.1
  226. *-- Rev. History: None
  227. *-- Calls.......: SINH()               Function in TRIG.PRG
  228. *-- Called by...: Any
  229. *-- Usage.......: CScH(<nX>)
  230. *-- Example.....: ?CScH(48)
  231. *-- Returns.....: Numeric
  232. *-- Parameters..: nX = Return CScH of X
  233. *-------------------------------------------------------------------------------
  234.  
  235.     parameters nX
  236.     
  237. RETURN 1 / sinh( nX )
  238. *-- EoF: CScH()
  239.  
  240. FUNCTION CoTH
  241. *-------------------------------------------------------------------------------
  242. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  243. *-- Date........: 03/01/1992
  244. *-- Notes.......: Hyperbolic cotangent of an angle X in radians
  245. *-- Written for.: dBASE IV, 1.1
  246. *-- Rev. History: None
  247. *-- Calls.......: COSH()               Function in TRIG.PRG
  248. *--               SINH()               Function in TRIG.PRG
  249. *-- Called by...: Any
  250. *-- Usage.......: CoTH(<nX>)
  251. *-- Example.....: ?CoTH(48)
  252. *-- Returns.....: Numeric
  253. *-- Parameters..: nX = Return ACoT of X
  254. *-------------------------------------------------------------------------------
  255.  
  256.     parameters nX
  257.     
  258. RETURN cosh( nX ) / sinh( nX )
  259. *-- EoF: CoTH()
  260.  
  261. FUNCTION ASinH
  262. *-------------------------------------------------------------------------------
  263. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  264. *-- Date........: 03/01/1992
  265. *-- Notes.......: Inverse hyperbolic sine - angle size in radians
  266. *--               for given hyperbolic sine nX
  267. *-- Written for.: dBASE IV, 1.1
  268. *-- Rev. History: None
  269. *-- Calls.......: None
  270. *-- Called by...: Any
  271. *-- Usage.......: ASinH(<nX>)
  272. *-- Example.....: ?ASinH(48)
  273. *-- Returns.....: Numeric
  274. *-- Parameters..: nX = Return ASinH of X
  275. *-------------------------------------------------------------------------------
  276.  
  277.     parameters nX
  278.     
  279. RETURN log( nX + sqrt( nX * nX + 1 ) )
  280. *-- EoF: ASinH()
  281.  
  282. FUNCTION ACosH
  283. *-------------------------------------------------------------------------------
  284. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  285. *-- Date........: 03/01/1992
  286. *-- Notes.......: Inverse hyperbolic cosine - angle size in radians
  287. *--               for given hyperbolic cosine X
  288. *-- Written for.: dBASE IV, 1.1
  289. *-- Rev. History: None
  290. *-- Calls.......: None
  291. *-- Called by...: Any
  292. *-- Usage.......: ACoSH(<nX>)
  293. *-- Example.....: ?ACoSH(48)
  294. *-- Returns.....: Numeric
  295. *-- Parameters..: nX = Return ACoSH of X
  296. *-------------------------------------------------------------------------------
  297.  
  298.     parameters nX
  299.     
  300. RETURN log( nX + sqrt( nX * nX - 1 ) )
  301. *-- EoF: ACosH()
  302.  
  303. FUNCTION ATanH
  304. *-------------------------------------------------------------------------------
  305. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  306. *-- Date........: 03/01/1992
  307. *-- Notes.......: Inverse hyperbolic tangent - angle size in radians
  308. *--               for given hyperbolic tangent X
  309. *-- Written for.: dBASE IV, 1.1
  310. *-- Rev. History: None
  311. *-- Calls.......: None
  312. *-- Called by...: Any
  313. *-- Usage.......: ATanH(<nX>)
  314. *-- Example.....: ?ATanH(48)
  315. *-- Returns.....: Numeric
  316. *-- Parameters..: nX = Return ATanH of X
  317. *-------------------------------------------------------------------------------
  318.  
  319.     parameters nX
  320.     
  321. RETURN log( ( 1 + nX ) / ( 1 - nX ) ) / 2
  322. *-- EoF: ATanH()
  323.  
  324. FUNCTION ASecH
  325. *-------------------------------------------------------------------------------
  326. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  327. *-- Date........: 03/01/1992
  328. *-- Notes.......: Inverse hyperbolic secant - angle size in radians
  329. *--               for given hyperbolic secant X
  330. *-- Written for.: dBASE IV, 1.1
  331. *-- Rev. History: None
  332. *-- Calls.......: None
  333. *-- Called by...: Any
  334. *-- Usage.......: ASecH(<nX>)
  335. *-- Example.....: ?ASecH(48)
  336. *-- Returns.....: Numeric
  337. *-- Parameters..: nX = Return ASecH of X
  338. *-------------------------------------------------------------------------------
  339.  
  340.     parameters nX
  341.     
  342. RETURN log( ( sqrt( -nX * nX + 1 ) + 1 ) / nX )
  343. *-- EoF: ASecH()
  344.  
  345. FUNCTION ACSCH
  346. *-------------------------------------------------------------------------------
  347. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  348. *-- Date........: 03/01/1992
  349. *-- Notes.......: Inverse hyperbolic cosecant - angle size in radians
  350. *--               for given hyperbolic cosecant X
  351. *-- Written for.: dBASE IV, 1.1
  352. *-- Rev. History: None
  353. *-- Calls.......: None
  354. *-- Called by...: Any
  355. *-- Usage.......: ACSCH(<nX>)
  356. *-- Example.....: ?ACSCH(48)
  357. *-- Returns.....: Numeric
  358. *-- Parameters..: nX = Return ACSCH of X
  359. *-------------------------------------------------------------------------------
  360.  
  361.     parameters nX
  362.     
  363. RETURN log( ( sign(nX) * sqrt( nX * nX + 1 ) + 1 ) / nX )
  364. *-- EoF: ACSCH()
  365.  
  366. FUNCTION ACotH
  367. *-------------------------------------------------------------------------------
  368. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  369. *-- Date........: 03/01/1992
  370. *-- Notes.......: Inverse hyperbolic cotangent - angle size in radians
  371. *--               for given hyperbolic cotangent X
  372. *-- Written for.: dBASE IV, 1.1
  373. *-- Rev. History: None
  374. *-- Calls.......: None
  375. *-- Called by...: Any
  376. *-- Usage.......: ACotH(<nX>)
  377. *-- Example.....: ?ACoTH(48)
  378. *-- Returns.....: Numeric
  379. *-- Parameters..: nX = Return ACoTH of X
  380. *-------------------------------------------------------------------------------
  381.  
  382.     parameters nX
  383.     
  384. RETURN log( ( nX + 1 ) / ( nX - 1 ) ) / 2
  385. *-- EoF: ACotH()
  386.  
  387. FUNCTION Hav
  388. *-------------------------------------------------------------------------------
  389. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  390. *-- Date........: 03/01/1992
  391. *-- Notes.......: Haversine of an angle in radians
  392. *-- Written for.: dBASE IV, 1.1
  393. *-- Rev. History: None
  394. *-- Calls.......: None
  395. *-- Called by...: Any
  396. *-- Usage.......: Hav(<nX>)
  397. *-- Example.....: ?Hav(48)
  398. *-- Returns.....: Numeric
  399. *-- Parameters..: nX = Return Hav of X
  400. *-------------------------------------------------------------------------------
  401.  
  402.     parameters nX
  403.     
  404. RETURN ( 1 - cos( nX ) ) / 2
  405. *-- EoF: Hav()
  406.  
  407. FUNCTION AHav
  408. *-------------------------------------------------------------------------------
  409. *-- Programmer..: Jay Parsons (CIS: 70160,340)
  410. *-- Date........: 03/01/1992
  411. *-- Notes.......: Inverse haversine - angle size in radians for given
  412. *--               haversine
  413. *-- Written for.: dBASE IV, 1.1
  414. *-- Rev. History: None
  415. *-- Calls.......: None
  416. *-- Called by...: Any
  417. *-- Usage.......: AHav(<nX>)
  418. *-- Example.....: ?AHav(48)
  419. *-- Returns.....: Numeric
  420. *-- Parameters..: nX = Return AHav of X
  421. *-------------------------------------------------------------------------------
  422.  
  423.     parameters nX
  424.     
  425. RETURN acos( 1 - 2 * nX )
  426. *-- EoF: AHav()
  427.  
  428. *-------------------------------------------------------------------------------
  429. *-- EoP: TRIG.PRG
  430. *-------------------------------------------------------------------------------
  431.